home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload Trio 2 / Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO / dir30 / statecad.zip / SETUPAPI.IN_ / SETUPAPI.IN
Text File  |  1993-03-23  |  56KB  |  1,815 lines

  1. '**************************************************************************
  2. '*******************************  Windows API's  **************************
  3. '**************************************************************************
  4. GLOBAL hSetup AS INTEGER
  5. GLOBAL fFrameInit AS INTEGER
  6. GLOBAL fInstallInit AS INTEGER
  7.  
  8. CONST SM_CXSCREEN = 0
  9. CONST SM_CYSCREEN = 1
  10.  
  11. CONST WF_80x87    = 1024
  12. CONST WF_CPU186   =  128
  13. CONST WF_CPU286   =    2
  14. CONST WF_CPU386   =    4
  15. CONST WF_CPU486   =    8
  16. CONST WF_STANDARD =   16
  17. CONST WF_ENHANCED =   32
  18.  
  19.  
  20. '' DoMsgBox Flags
  21.  
  22. CONST MB_OK          = 0
  23. CONST MB_ICONHAND    = 16
  24. CONST MB_TASKMODAL   = 8192
  25.  
  26. '' Added - not part of original setup pkg.
  27.  
  28. CONST MB_YESNO        = 4
  29. CONST MB_OKCANCEL    = 1
  30. CONST MB_YESNOCANCEL    = 3
  31.  
  32. CONST IDCANCEL        = 2
  33. CONST IDABORT        = 3
  34. CONST IDNO        = 7
  35. CONST IDRETRY        = 4
  36. CONST IDYES        = 6
  37.  
  38. DECLARE FUNCTION DoMsgBox LIB "mscomstf.dll" (lpText$,lpCaption$,wType%) As INTEGER
  39. DECLARE FUNCTION GetWindowsDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
  40. DECLARE FUNCTION GetSystemDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
  41. DECLARE FUNCTION GetProfileString LIB "kernel" (szSect$, szKey$, szDefault$, szBuf$, cbBuf%) AS INTEGER
  42. DECLARE FUNCTION GetVersion LIB "kernel" AS INTEGER
  43. DECLARE FUNCTION GetSystemMetrics LIB "user" (nIndex%) AS INTEGER
  44. DECLARE FUNCTION GetWinFlags LIB "kernel" AS LONG
  45.  
  46.  
  47.  
  48.  
  49. '**************************************************************************
  50. '****************************** Setup Constants ***************************
  51. '**************************************************************************
  52.  
  53.  
  54. ''Command Option Flags
  55.  
  56. CONST cmoVital       = 1
  57. CONST cmoCopy        = 2
  58. CONST cmoUndo        = 4
  59. CONST cmoRoot        = 8
  60. CONST cmoDecompress  = 16
  61. CONST cmoTimeStamp   = 32
  62. CONST cmoReadOnly    = 64
  63. CONST cmoBackup      = 128
  64. CONST cmoForce       = 256
  65. CONST cmoRemove      = 512
  66. CONST cmoOverwrite   = 1024
  67. CONST cmoAppend      = 2048
  68. CONST cmoPrepend     = 4096
  69. CONST cmoNone        = 0
  70. CONST cmoAll         = 65535
  71.  
  72.  
  73. ''File Exist Modes
  74.  
  75. CONST femExists     = 0
  76. CONST femRead       = 1
  77. CONST femWrite      = 2
  78. CONST femReadWrite  = 3
  79.  
  80.  
  81. ''Read-Only Return Code
  82.  
  83. CONST ynrcNo         = 0
  84. CONST ynrcYes        = 1
  85. CONST ynrcErr1       = 2
  86. CONST ynrcErr2       = 3
  87. CONST ynrcErr3       = 4
  88. CONST ynrcErr4       = 5
  89. CONST ynrcErr5       = 6
  90. CONST ynrcErr6       = 7
  91. CONST ynrcErr7       = 8
  92. CONST ynrcErr8       = 9
  93. CONST ynrcErr9       = 10
  94.  
  95.  
  96. ''General Return Codes
  97.  
  98. CONST grcOkay       = 0
  99. CONST grcNotOkay    = 1
  100. CONST grcUserQuit   = 48
  101.  
  102.  
  103. ''Ranges
  104.  
  105. ''CONST cbSymValMax = 8192
  106. CONST cbSymValMax = 512
  107.     ''REVIEW: symbol table will allow strings up to 8192 bytes
  108.     '' but we get Out of String Space wattdrvr error if we alloc
  109.     '' STRING$() that big. (See GetSymbolValue and GetListItem)
  110.     '' We should look into using dynamic far alloc instead of
  111.     '' STRING$ for large buffers.
  112.     '' NOTE: 8192 works okay with runtime wattdrvr, however.
  113.  
  114.  
  115. ''ON ERROR Error Codes
  116. CONST STFERR      = 1024   ''setup system error
  117. CONST STFQUIT     = 1025   ''user quit
  118.  
  119. CONST scmOff      = 0
  120. CONST scmOnIgnore = 1
  121. CONST scmOnFatal  = 2
  122.  
  123.  
  124. '**************************************************************************
  125. '********************************  Setup API's  ***************************
  126. '**************************************************************************
  127.  
  128. '' common
  129.  
  130. DECLARE FUNCTION FParseFATPathIntoPieces LIB "mscomstf.dll" (szPath$, szVol$, cbVol%, szDir$, cbDir%, szFile$, cbFile%) AS INTEGER
  131. DECLARE FUNCTION FOpenInf LIB "mscomstf.dll" (szFile$, fCheck%, fCheckSyms%) AS INTEGER
  132. DECLARE FUNCTION FSetSilent LIB "mscomstf.dll" (mode%) AS INTEGER
  133. DECLARE FUNCTION FSetBeepingMode LIB "mscomstf.dll" (mode%) AS INTEGER
  134. DECLARE FUNCTION HShowWaitCursor LIB "msshlstf.dll" AS INTEGER
  135. DECLARE FUNCTION FRestoreCursor  LIB "msshlstf.dll" (hPrev%) AS INTEGER
  136. DECLARE FUNCTION FOpenLogFile    LIB "mscomstf.dll" (szFile$, fAppend%) AS INTEGER
  137. DECLARE FUNCTION FCloseLogFile   LIB "mscomstf.dll" AS INTEGER
  138. DECLARE FUNCTION FWriteToLogFile LIB "mscomstf.dll" (sz$, fRequire%) AS INTEGER
  139. DECLARE FUNCTION CbGetInfSectionKeyField LIB "mscomstf.dll" (szSect$, szKey$, iField%, szBuf$, cbBuf%) AS INTEGER
  140. DECLARE FUNCTION FMakeListInfSectionField LIB "mscomstf.dll" (szSym$, szSect$, iField%) AS INTEGER
  141.  
  142.  
  143. ''shell
  144.  
  145. DECLARE FUNCTION FSetBitmap LIB "msshlstf.dll" (szDll$, Bitmap%) AS INTEGER
  146. DECLARE FUNCTION FSetAbout LIB "msshlstf.dll" (szAbout1$, szAbout2$) AS INTEGER
  147. DECLARE FUNCTION FDoDialog LIB "msuilstf.dll" (hwnd%, szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS INTEGER
  148. DECLARE FUNCTION FKillNDialogs LIB "msuilstf.dll" (n%) AS INTEGER
  149. DECLARE SUB SetWindowText LIB "User" (hwnd%, lpString$)
  150. DECLARE FUNCTION FSetSymbolValue LIB "msshlstf.dll" (szSymbol$, szValue$) AS INTEGER
  151. DECLARE FUNCTION FRemoveSymbol LIB "mscomstf.dll" (szSym$) AS INTEGER
  152. DECLARE FUNCTION CbGetSymbolValue LIB "mscomstf.dll" (szSymbol$, szValue$, Length%) AS INTEGER
  153. DECLARE FUNCTION UsGetListLength LIB "mscomstf.dll" (szSymbol$) AS INTEGER
  154. DECLARE FUNCTION CbGetListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$, cbMax%) AS INTEGER
  155. DECLARE FUNCTION FAddListItem LIB "mscomstf.dll" (szListSymbol$, szListItem$) AS INTEGER
  156. DECLARE FUNCTION FReplaceListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$) AS INTEGER
  157. DECLARE FUNCTION FSetSymbolToListOfInfKeys LIB "mscomstf.dll" (szSym$, szSect$, fNulls%) AS INTEGER
  158.  
  159.  
  160. ''shell
  161.  
  162. DECLARE FUNCTION InitializeFrame LIB "msshlstf.dll" (szCmdLine$) AS INTEGER
  163. DECLARE FUNCTION HwndFrame LIB "msshlstf.dll" AS INTEGER
  164. DECLARE FUNCTION HinstFrame LIB "msshlstf.dll" AS INTEGER
  165.  
  166.  
  167.  
  168. ''install
  169.  
  170. DECLARE SUB      ProSetPos LIB "msinsstf.dll" (x%, y%)
  171. DECLARE FUNCTION FCreateDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
  172. DECLARE FUNCTION FRemoveDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
  173. DECLARE FUNCTION FAddSectionFilesToCopyList LIB "mscomstf.dll" (szSect$, szSrc$, szDest$) AS INTEGER
  174. DECLARE FUNCTION FAddSectionKeyFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
  175. DECLARE FUNCTION FAddSpecialFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
  176. DECLARE FUNCTION GrcCopyFilesInCopyList LIB "msinsstf.dll" (hInstance%) AS INTEGER
  177. DECLARE FUNCTION FRemoveIniSection LIB "msinsstf.dll" (szFile$, szSect$, cmo%) AS INTEGER
  178. DECLARE FUNCTION FCreateIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
  179. DECLARE FUNCTION FRemoveIniKey LIB "msinsstf.dll" (szFile$, szSect$, szKey$, cmo%) AS INTEGER
  180. DECLARE FUNCTION FCreateSysIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
  181. DECLARE FUNCTION FCreateProgManGroup LIB "msinsstf.dll" (szGroup$, szPath$, cmo%) AS INTEGER
  182. DECLARE FUNCTION FCreateProgManItem LIB "msinsstf.dll" (szGroup$, szItem$, szCmd$, cmo%) AS INTEGER
  183. DECLARE FUNCTION FShowProgManGroup LIB "msinsstf.dll" (szGroup$, szCmd$, cmo%) AS INTEGER
  184. DECLARE FUNCTION FStampResource LIB "msinsstf.dll" (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) AS INTEGER
  185. DECLARE FUNCTION FDumpCopyListToFile LIB "msinsstf.dll" (szFile$) AS INTEGER
  186. DECLARE SUB      ResetCopyList LIB "msinsstf.dll"
  187. DECLARE FUNCTION LcbGetCopyListCost LIB "msinsstf.dll" (szExtraList$, szCostList$, szNeedList$) AS LONG
  188. DECLARE FUNCTION FAddDos5Help LIB "msinsstf.dll" (szProgName$, szProgHelp$, cmo%) AS INTEGER
  189. DECLARE FUNCTION FCopyOneFile LIB "msinsstf.dll" (szSrc$, szDest$, cmo%, fAppend%) AS INTEGER
  190. DECLARE FUNCTION YnrcRemoveFile LIB "msinsstf.dll" (szFullPathSrc$, cmo%) AS INTEGER
  191. DECLARE FUNCTION YnrcBackupFile LIB "msinsstf.dll" (szFullPath$, szBackup$, cmo%) AS INTEGER
  192. DECLARE FUNCTION FInitializeInstall LIB "msinsstf.dll" (hinst%, hwndFrame%) AS INTEGER
  193. DECLARE FUNCTION WFindFileUsingFileOpen LIB "msinsstf.dll" (szFile$, szBuf$, cbBuf%) AS INTEGER
  194. DECLARE FUNCTION FIsDirWritable LIB "msinsstf.dll" (szDir$) AS INTEGER
  195. DECLARE FUNCTION FIsFileWritable LIB "msinsstf.dll" (szFile$) AS INTEGER
  196. DECLARE FUNCTION FAddToBillboardList LIB "msinsstf.dll" (szDll$, idDlg%, szProc$, lTicks&) AS INTEGER
  197. DECLARE FUNCTION FClearBillboardList LIB "msinsstf.dll" AS INTEGER
  198. DECLARE FUNCTION FSetRestartDir LIB "msinsstf.dll" (szDir$) AS INTEGER
  199. DECLARE FUNCTION FRestartListEmpty LIB "msinsstf.dll" AS INTEGER
  200. DECLARE FUNCTION FExitExecRestart LIB "msinsstf.dll" AS INTEGER
  201. DECLARE FUNCTION SetCopyMode LIB "msinsstf.dll" (fMode%) AS INTEGER
  202. DECLARE FUNCTION GetCopyMode LIB "msinsstf.dll" AS INTEGER
  203. DECLARE FUNCTION SetDecompMode LIB "msinsstf.dll" (fMode%) AS INTEGER
  204. DECLARE FUNCTION GetDecompMode LIB "msinsstf.dll" AS INTEGER
  205. DECLARE FUNCTION SetSizeCheckMode LIB "msinsstf.dll" (scmMode%) AS INTEGER
  206. DECLARE FUNCTION FPrependToPath LIB "msinsstf.dll" (szSrc$, szDst$, szDir$, cmo%) AS INTEGER
  207.  
  208. DECLARE FUNCTION SetTimeValue LIB "msinsstf.dll" (usHours%, usMinutes%, usSeconds%) AS INTEGER
  209.  
  210.  
  211.  
  212. '*************************************************************************
  213. '****************  Setup Basic Wrapper Declarations  *********************
  214. '*************************************************************************
  215.  
  216.  
  217. ''shell
  218.  
  219. DECLARE SUB SetBitmap(szDll$, Bitmap%)
  220. DECLARE SUB SetAbout(szAbout1$, szAbout2$)
  221. DECLARE FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS STRING
  222. DECLARE SUB UIPop (n%)
  223. DECLARE SUB UIPopAll
  224. DECLARE SUB SetTitle (sz$)
  225. DECLARE SUB ReadInfFile (szFile$)
  226. DECLARE SUB SetSymbolValue (szSymbol$, szValue$)
  227. DECLARE SUB RemoveSymbol (szSym$)
  228. DECLARE FUNCTION GetSymbolValue (szSymbol$) AS STRING
  229. DECLARE FUNCTION GetListLength(szSymbol$) AS INTEGER
  230. DECLARE SUB MakeListFromSectionKeys (szSymbol$, szSect$)
  231. DECLARE FUNCTION GetListItem(szSymbol$, n%) AS STRING
  232. DECLARE SUB AddListItem(szSymbol$, szItem$)
  233. DECLARE SUB ReplaceListItem(szSymbol$, n%, szItem$)
  234.  
  235. DECLARE FUNCTION InitFrame (szCmdLine$) AS INTEGER
  236. DECLARE FUNCTION InitSetup (szCmdLine$) AS INTEGER
  237.  
  238. DECLARE FUNCTION ShowWaitCursor AS INTEGER
  239. DECLARE SUB RestoreCursor (hPrev%)
  240.  
  241. DECLARE FUNCTION SetBeepingMode (mode%) AS INTEGER
  242. DECLARE FUNCTION SetSilentMode (mode%) AS INTEGER
  243.  
  244. DECLARE FUNCTION GetSectionKeyDate (szSect$, szKey$) AS STRING
  245. DECLARE FUNCTION GetSectionKeyFilename (szSect$, szKey$) AS STRING
  246. DECLARE FUNCTION GetSectionKeySize (szSect$, szKey$) AS LONG
  247. DECLARE FUNCTION GetSectionKeyVersion (szSect$, szKey$) AS STRING
  248.  
  249. DECLARE SUB MakeListFromSectionDate (szSym$, szSect$)
  250. DECLARE SUB MakeListFromSectionFilename (szSym$, szSect$)
  251. DECLARE SUB MakeListFromSectionSize (szSym$, szSect$)
  252. DECLARE SUB MakeListFromSectionVersion (szSym$, szSect$)
  253.  
  254.  
  255. ''install
  256.  
  257.  
  258. DECLARE SUB CreateDir (szDir$, cmo%)
  259. DECLARE SUB RemoveDir (szDir$, cmo%)
  260. DECLARE SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$)
  261. DECLARE SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
  262. DECLARE SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
  263. DECLARE SUB CopyFilesInCopyList
  264. DECLARE SUB RemoveIniSection (szFile$, szSect$, cmo%)
  265. DECLARE SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
  266. DECLARE SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%)
  267. DECLARE SUB CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
  268. DECLARE SUB CreateProgmanGroup (szGroup$, szPath$, cmo%)
  269. DECLARE SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%)
  270. DECLARE SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%)
  271. DECLARE SUB StampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%)
  272. DECLARE SUB DumpCopyList (szFile$)
  273. DECLARE SUB ClearCopyList
  274. DECLARE FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) AS LONG
  275. DECLARE SUB AddDos5Help (szProgName$, szProgHelp$, cmo%)
  276. DECLARE SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%)
  277. DECLARE SUB RemoveFile (szFullPathSrc$, cmo%)
  278. DECLARE SUB BackupFile (szFullPath$, szBackup$)
  279. DECLARE SUB RenameFile (szFullPath$, szBackup$)
  280. DECLARE SUB InitInstall
  281. DECLARE SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&)
  282. DECLARE SUB AddBlankToBillboardList (lTicks&)
  283. DECLARE SUB ClearBillboardList
  284. DECLARE SUB OpenLogFile (szFile$, fAppend%)
  285. DECLARE SUB CloseLogFile
  286. DECLARE SUB WriteToLogFile (szStr$)
  287. DECLARE SUB SetCopyGaugePosition (x%, y%)
  288. DECLARE SUB SetRestartDir(szDir$)
  289. DECLARE FUNCTION RestartListEmpty AS INTEGER
  290. DECLARE FUNCTION ExitExecRestart AS INTEGER
  291. DECLARE FUNCTION FindFileUsingFileOpen (szFile$) AS STRING
  292. DECLARE FUNCTION IsDirWritable (szDir$) AS INTEGER
  293. DECLARE FUNCTION IsFileWritable (szFile$) AS INTEGER
  294. DECLARE FUNCTION GetNthFieldFromIniString (szLine$, iField%) AS STRING
  295. DECLARE SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%)
  296.  
  297.  
  298. '' Error Handling
  299.  
  300. '$ifdef DEBUG
  301.  
  302. '' Setup API Errors
  303. CONST saeFail   = 0
  304. CONST saeInit   = 1
  305. CONST saeNYI    = 3
  306. CONST saeArg    = 4    ''must be max sae value
  307.  
  308. DECLARE SUB StfApiErr (nMsg%, szApi$, szArgs$)
  309. DECLARE SUB BadArgErr (nArg%, szApi$, szArgs$)
  310.  
  311. '' chk arg
  312. DECLARE FUNCTION FValidFATDir LIB "mscomstf.dll" (szDir$) AS INTEGER
  313. DECLARE FUNCTION CchlValidFATSubPath LIB "mscomstf.dll" (szPath$) AS INTEGER
  314. DECLARE FUNCTION FValidFATPath LIB "mscomstf.dll" (szPath$) AS INTEGER
  315. DECLARE FUNCTION FValidDrive (szDrive$) AS INTEGER
  316.  
  317. DECLARE FUNCTION FValidInfSect (szSect$) AS INTEGER
  318. DECLARE FUNCTION FValidIniFile (szFile$) AS INTEGER
  319.  
  320. '$endif ''DEBUG
  321.  
  322.  
  323.  
  324. '' Windows system detect
  325.  
  326. DECLARE FUNCTION GetWindowsMajorVersion AS INTEGER
  327. DECLARE FUNCTION GetWindowsMinorVersion AS INTEGER
  328. DECLARE FUNCTION GetWindowsMode AS INTEGER
  329. DECLARE FUNCTION GetWindowsDir  AS STRING
  330. DECLARE FUNCTION GetWindowsSysDir AS STRING
  331. DECLARE FUNCTION IsWindowsShared AS INTEGER
  332. DECLARE FUNCTION GetScreenWidth AS INTEGER
  333. DECLARE FUNCTION GetScreenHeight AS INTEGER
  334.  
  335.  
  336. '*************************************************************************
  337. '*****************  Setup Basic Wrapper Definitions  *********************
  338. '*************************************************************************
  339. FUNCTION InitSetup(szCmdLine$) STATIC AS INTEGER
  340.     fFrameInit = 0
  341.     fInstallInit = 0
  342.  
  343.     IF hSetup > 0 THEN
  344. '$ifdef DEBUG
  345.         StfApiErr saeInit, "InitSetup", szCmdLine$
  346. '$endif ''DEBUG
  347.     END IF
  348.  
  349.     i% = InitFrame(szCmdLine$)
  350.     fFrameInit = 1
  351.  
  352.     InitInstall
  353.     fInstallInit = 1
  354.  
  355.     InitSetup = i%
  356. END FUNCTION
  357.  
  358.  
  359.  
  360. '**************************************************************************
  361. FUNCTION InitFrame(szCmdLine$) STATIC AS INTEGER
  362.     IF hSetup > 0 THEN
  363. '$ifdef DEBUG
  364.         StfApiErr saeInit, "InitFrame", szCmdLine$
  365. '$endif ''DEBUG
  366.     ELSE
  367.         i% = InitializeFrame(szCmdLine$)
  368.         IF i% = -1 THEN
  369.             END   '' NOT an error - Usage (/?) or Command line copy operation
  370.         ELSEIF i% = 0 THEN
  371. '$ifdef DEBUG
  372.             StfApiErr saeFail, "InitFrame", szCmdLine$
  373. '$endif ''DEBUG
  374.             END
  375.         ELSE
  376.             InitFrame = i%
  377.         END IF
  378.     END IF
  379. END FUNCTION
  380.  
  381.  
  382. '**************************************************************************
  383. SUB SetBitmap(szDll$, Bitmap%) STATIC
  384.     IF FSetBitmap(szDll$, Bitmap%) = 0 THEN
  385. '$ifdef DEBUG
  386.         StfApiErr saeFail, "SetBitmap", szDll$+","+STR$(Bitmap%)
  387. '$endif ''DEBUG
  388.         ERROR STFERR
  389.     END IF
  390. END SUB
  391.  
  392.  
  393. '**************************************************************************
  394. SUB SetAbout(szAbout1$, szAbout2$) STATIC
  395.     IF FSetAbout(szAbout1$, szAbout2$) = 0 THEN
  396. '$ifdef DEBUG
  397.         StfApiErr saeFail, "SetAbout", szAbout1$ + "," + szAbout2$
  398. '$endif ''DEBUG
  399.         ERROR STFERR
  400.     END IF
  401. END SUB
  402.  
  403.  
  404. '*************************************************************************
  405. SUB SetTitle(sz$) STATIC
  406.     SetWindowText HwndFrame(), sz$
  407. END SUB
  408.  
  409.  
  410. '*************************************************************************
  411. SUB ReadInfFile (szFile$) STATIC
  412. '$ifdef DEBUG
  413.     if FValidFATPath(szFile$) = 0 then
  414.         BadArgErr 1, "ReadInfFile", szFile$
  415.     end if
  416.     IF FOpenInf(szFile$, 1, 1) = 0 THEN
  417.         StfApiErr saeFail, "ReadInfFile", szFile$
  418. '$else  ''!DEBUG
  419.     IF FOpenInf(szFile$, 1, 0) = 0 THEN
  420. '$endif ''!DEBUG
  421.         ERROR STFERR
  422.     END IF
  423. END SUB
  424.  
  425.  
  426. '*************************************************************************
  427. FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) STATIC AS STRING
  428. '$ifdef DEBUG
  429.     if szDll$ = "" then
  430.         n% = 1
  431.     elseif szDlgProc$ = "" then
  432.         n% = 3
  433.     else
  434.         n% = 0
  435.     end if
  436.     if n% > 0 then
  437.         BadArgErr n%, "UIStartDlg", szDll$+", "+STR$(Dlg%)+", "+szDlgProc$+", "+STR$(HelpDlg%)+", "+szHelpProc$
  438.     end if
  439. '$endif ''DEBUG
  440.  
  441.     IF FDoDialog(HwndFrame(), szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) = 0 THEN
  442. '$ifdef DEBUG
  443.         StfApiErr saeFail, "UIStartDlg", szDll$+", "+STR$(Dlg%)+", "+szDlgProc$+", "+STR$(HelpDlg%)+", "+szHelpProc$
  444. '$endif ''DEBUG
  445.         ERROR STFERR
  446.     ELSE
  447.         UIStartDlg = GetSymbolValue("DLGEVENT")
  448.     END IF
  449. END FUNCTION
  450.  
  451.  
  452. '*************************************************************************
  453. SUB UIPop (n%) STATIC
  454.     IF FKillNDialogs(n%) = 0 THEN
  455. '$ifdef DEBUG
  456.         StfApiErr saeFail, "UIPop", STR$(n%)
  457. '$endif ''DEBUG
  458.         ERROR STFERR
  459.     END IF
  460. END SUB
  461.  
  462.  
  463. '*************************************************************************
  464. SUB UIPopAll STATIC
  465.     IF FKillNDialogs(65535) = 0 THEN
  466. '$ifdef DEBUG
  467.         StfApiErr saeFail, "UIPopAll", ""
  468. '$endif ''DEBUG
  469.         ERROR STFERR
  470.     END IF
  471. END SUB
  472.  
  473.  
  474. '*************************************************************************
  475. FUNCTION GetSymbolValue(szSymbol$) STATIC AS STRING
  476. '$ifdef DEBUG
  477.     if szSymbol$ = "" then
  478.         BadArgErr 1, "GetSymbolValue", szSymbol$
  479.     end if
  480. '$endif ''DEBUG
  481.     szValue$ = string$(cbSymValMax,32)
  482.     Length% = CbGetSymbolValue(szSymbol$, szValue$, cbSymValMax)
  483.     GetSymbolValue = szValue$
  484.     IF Length% >= cbSymValMax THEN
  485.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  486.         ERROR STFERR
  487.     END IF
  488.     IF szSymbol$ = "" THEN
  489.         ERROR STFERR
  490.     END IF
  491.     szValue$ = ""
  492. END FUNCTION
  493.  
  494.  
  495. '*************************************************************************
  496. FUNCTION GetListLength(szSymbol$) STATIC AS INTEGER
  497. '$ifdef DEBUG
  498.     if szSymbol$ = "" then
  499.         BadArgErr 1, "GetListLength", szSymbol$
  500.     end if
  501. '$endif ''DEBUG
  502.     GetListLength = UsGetListLength(szSymbol$)
  503.     IF szSymbol$ = "" THEN
  504.         ERROR STFERR
  505.     END IF
  506. END FUNCTION
  507.  
  508.  
  509. '*************************************************************************
  510. FUNCTION GetListItem(szListSymbol$, nItem%) STATIC AS STRING
  511. '$ifdef DEBUG
  512.     if szListSymbol$ = "" then
  513.         BadArgErr 1, "GetListItem", szListSymbol$+", "+STR$(nItem%)
  514.     end if
  515.  
  516.     if nItem% <= 0 or nItem% > GetListLength(szListSymbol$) then
  517.         BadArgErr 2, "GetListItem", szListSymbol$+", "+STR$(nItem%)
  518.     end if
  519. '$endif ''DEBUG
  520.  
  521.     szListItem$ = string$(cbSymValMax,32)
  522.     Length% = CbGetListItem(szListSymbol$, nItem%, szListItem$, cbSymValMax)
  523.     GetListItem = szListItem$
  524.     IF Length% >= cbSymValMax THEN
  525.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  526.         ERROR STFERR
  527.     END IF
  528.     IF szListSymbol$ = "" THEN
  529.         ERROR STFERR
  530.     END IF
  531.     if nItem% <= 0 or nItem% > GetListLength(szListSymbol$) then
  532.         ERROR STFERR
  533.     end if
  534.     szListItem$ = ""
  535. END FUNCTION
  536.  
  537.  
  538. '*************************************************************************
  539. SUB AddListItem(szSymbol$, szItem$) STATIC
  540. '$ifdef DEBUG
  541.     if szSymbol$ = "" then
  542.         BadArgErr 1, "AddListItem", szSymbol$+", "+szItem$
  543.     end if
  544. '$endif ''DEBUG
  545.     IF FAddListItem(szSymbol$, szItem$) = 0 THEN
  546. '$ifdef DEBUG
  547.         StfApiErr saeFail, "AddListItem", szSymbol$+", "+szItem$
  548. '$endif ''DEBUG
  549.         ERROR STFERR
  550.     END IF
  551. END SUB
  552.  
  553.  
  554. '*************************************************************************
  555. SUB ReplaceListItem(szSymbol$, n%, szItem$) STATIC
  556. '$ifdef DEBUG
  557.     if szSymbol$ = "" then
  558.         nArg% = 1
  559.     elseif (n% <= 0) OR (n% > GetListLength(szSymbol$)) then
  560.         nArg% = 2
  561.     else
  562.         nArg% = 0
  563.     end if
  564.     if nArg% > 0 then
  565.         BadArgErr nArg%, "ReplaceListItem", szSymbol$+", "+STR$(n%)+", "+szItem$
  566.     end if
  567. '$endif ''DEBUG
  568.  
  569.     IF FReplaceListItem(szSymbol$, n%, szItem$) = 0 THEN
  570. '$ifdef DEBUG
  571.         StfApiErr saeFail, "ReplaceListItem", szSymbol$+", "+STR$(n%)+", "+szItem$
  572. '$endif ''DEBUG
  573.         ERROR STFERR
  574.     END IF
  575. END SUB
  576.  
  577.  
  578. '**************************************************************************
  579. SUB MakeListFromSectionKeys(szSymbol$, szSect$) STATIC
  580. '$ifdef DEBUG
  581.     if szSymbol$ = "" then
  582.         n% = 1
  583.     elseif FValidInfSect(szSect$) = 0 then
  584.         n% = 2
  585.     else
  586.         n% = 0
  587.     end if
  588.     if n% > 0 then
  589.         BadArgErr n%, "MakeListFromSectionKeys", szSymbol$+", "+szSect$
  590.     end if
  591. '$endif ''DEBUG
  592.  
  593.     IF FSetSymbolToListOfInfKeys(szSymbol$, szSect$, 1) = 0 THEN
  594. '$ifdef DEBUG
  595.         StfApiErr saeFail, "MakeListFromSectionKeys", szSymbol$+", "+szSect$
  596. '$endif ''DEBUG
  597.         ERROR STFERR
  598.     END IF
  599. END SUB
  600.  
  601.  
  602. '*************************************************************************
  603. SUB SetSymbolValue(szSymbol$, szValue$) STATIC
  604. '$ifdef DEBUG
  605.     if szSymbol$ = "" then
  606.         BadArgErr 1, "SetSymbolValue", szSymbol$+", "+szValue$
  607.     end if
  608. '$endif ''DEBUG
  609.     IF FSetSymbolValue(szSymbol$, szValue$) = 0 THEN
  610. '$ifdef DEBUG
  611.         StfApiErr saeFail, "SetSymbolValue", szSymbol$+", "+szValue$
  612. '$endif ''DEBUG
  613.         ERROR STFERR
  614.     END IF
  615. END SUB
  616.  
  617.  
  618. '*************************************************************************
  619. SUB RemoveSymbol(szSym$) STATIC
  620. '$ifdef DEBUG
  621.     if szSym$ = "" then
  622.         BadArgErr 1, "RemoveSymbol", szSym$
  623.     end if
  624. '$endif ''DEBUG
  625.     IF FRemoveSymbol(szSym$) = 0 THEN
  626. '$ifdef DEBUG
  627.         StfApiErr saeFail, "RemoveSymbol", szSym$
  628. '$endif ''DEBUG
  629.         ERROR STFERR
  630.     END IF
  631. END SUB
  632.  
  633.  
  634. '*************************************************************************
  635. FUNCTION ShowWaitCursor STATIC AS INTEGER
  636.     ShowWaitCursor = HShowWaitCursor
  637. END FUNCTION
  638.  
  639.  
  640. '*************************************************************************
  641. SUB RestoreCursor (hPrev%) STATIC
  642.     i% = FRestoreCursor(hPrev%)
  643.     IF i% = 0 THEN
  644. '$ifdef DEBUG
  645.         StfApiErr saeFail, "RestoreCursor", ""
  646. '$endif ''DEBUG
  647.         ERROR STFERR
  648.     END IF
  649. END SUB
  650.  
  651.  
  652. '*************************************************************************
  653. FUNCTION SetBeepingMode (mode%) STATIC AS INTEGER
  654.     SetBeepingMode = FSetBeepingMode(mode%)
  655. END FUNCTION
  656.  
  657.  
  658. '*************************************************************************
  659. FUNCTION SetSilentMode (mode%) STATIC AS INTEGER
  660.     SetSilentMode = FSetSilent(mode%)
  661. END FUNCTION
  662.  
  663.  
  664. '*************************************************************************
  665. FUNCTION GetSectionKeyDate (szSect$, szKey$) STATIC AS STRING
  666. '$ifdef DEBUG
  667.     if FValidInfSect(szSect$) = 0 then
  668.         n% = 1
  669.     elseif szKey$ = "" then
  670.         n% = 2
  671.     else
  672.         n% = 0
  673.     end if
  674.     if n% > 0 then
  675.         BadArgErr n%, "GetSectionKeyDate", szSect$+", "+szKey$
  676.     end if
  677. '$endif ''DEBUG
  678.  
  679.     szBuf$ = string$(128, 32)
  680.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 5, szBuf$, 128)
  681.     IF Length% >= 128 THEN
  682.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  683.         ERROR STFERR
  684.     END IF
  685.  
  686.     IF Length% = -1 THEN
  687. '$ifdef DEBUG
  688.         StfApiErr saeFail, "GetSectionKeyDate", szSect$+", "+szKey$
  689. '$endif ''DEBUG
  690.         ERROR STFERR
  691.     END IF
  692.  
  693.     GetSectionKeyDate = szBuf$
  694.     szBuf$ = ""
  695. END FUNCTION
  696.  
  697.  
  698. '*************************************************************************
  699. FUNCTION GetSectionKeyFilename (szSect$, szKey$) STATIC AS STRING
  700. '$ifdef DEBUG
  701.     if FValidInfSect(szSect$) = 0 then
  702.         n% = 1
  703.     elseif szKey$ = "" then
  704.         n% = 2
  705.     else
  706.         n% = 0
  707.     end if
  708.     if n% > 0 then
  709.         BadArgErr n%, "GetSectionKeyFilename", szSect$+", "+szKey$
  710.     end if
  711. '$endif ''DEBUG
  712.  
  713.     szBuf$ = string$(128, 32)
  714.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 1, szBuf$, 128)
  715.     IF Length% >= 128 THEN
  716.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  717.         ERROR STFERR
  718.     END IF
  719.  
  720.     IF Length% = -1 THEN
  721. '$ifdef DEBUG
  722.         StfApiErr saeFail, "GetSectionKeyFilename", szSect$+", "+szKey$
  723. '$endif ''DEBUG
  724.         ERROR STFERR
  725.     END IF
  726.  
  727.     GetSectionKeyFilename = szBuf$
  728.     szBuf$ = ""
  729. END FUNCTION
  730.  
  731.  
  732. '*************************************************************************
  733. FUNCTION GetSectionKeySize (szSect$, szKey$) STATIC AS LONG
  734. '$ifdef DEBUG
  735.     if FValidInfSect(szSect$) = 0 then
  736.         n% = 1
  737.     elseif szKey$ = "" then
  738.         n% = 2
  739.     else
  740.         n% = 0
  741.     end if
  742.     if n% > 0 then
  743.         BadArgErr n%, "GetSectionKeySize", szSect$+", "+szKey$
  744.     end if
  745. '$endif ''DEBUG
  746.  
  747.     szBuf$ = string$(128, 32)
  748.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 15, szBuf$, 128)
  749.     IF Length% >= 128 THEN
  750.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  751.         ERROR STFERR
  752.     END IF
  753.  
  754.     IF Length% = -1 THEN
  755. '$ifdef DEBUG
  756.         StfApiErr saeFail, "GetSectionKeySize", szSect$+", "+szKey$
  757. '$endif ''DEBUG
  758.         ERROR STFERR
  759.     END IF
  760.  
  761.     GetSectionKeySize = VAL(szBuf$)
  762.     szBuf$ = ""
  763. END FUNCTION
  764.  
  765.  
  766. '*************************************************************************
  767. FUNCTION GetSectionKeyVersion (szSect$, szKey$) STATIC AS STRING
  768. '$ifdef DEBUG
  769.     if FValidInfSect(szSect$) = 0 then
  770.         n% = 1
  771.     elseif szKey$ = "" then
  772.         n% = 2
  773.     else
  774.         n% = 0
  775.     end if
  776.     if n% > 0 then
  777.         BadArgErr n%, "GetSectionKeyVersion", szSect$+", "+szKey$
  778.     end if
  779. '$endif ''DEBUG
  780.  
  781.     szBuf$ = string$(128, 32)
  782.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 19, szBuf$, 128)
  783.     IF Length% >= 128 THEN
  784.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  785.         ERROR STFERR
  786.     END IF
  787.  
  788.     IF Length% = -1 THEN
  789. '$ifdef DEBUG
  790.         StfApiErr saeFail, "GetSectionKeyVersion", szSect$+", "+szKey$
  791. '$endif ''DEBUG
  792.         ERROR STFERR
  793.     END IF
  794.  
  795.     GetSectionKeyVersion = szBuf$
  796.     szBuf$ = ""
  797. END FUNCTION
  798.  
  799.  
  800. '*************************************************************************
  801. SUB MakeListFromSectionDate (szSym$, szSect$) STATIC
  802. '$ifdef DEBUG
  803.     if szSym$ = "" then
  804.         n% = 1
  805.     elseif FValidInfSect(szSect$) = 0 then
  806.         n% = 2
  807.     else
  808.         n% = 0
  809.     end if
  810.     if n% > 0 then
  811.         BadArgErr n%, "MakeListFromSectionDate", szSym$+", "+szSect$
  812.     end if
  813. '$endif ''DEBUG
  814.  
  815.     IF FMakeListInfSectionField(szSym$, szSect$, 5) = 0 THEN
  816. '$ifdef DEBUG
  817.         StfApiErr saeFail, "MakeListFromSectionDate", szSym$+", "+szSect$
  818. '$endif ''DEBUG
  819.         ERROR STFERR
  820.     END IF
  821. END SUB
  822.  
  823.  
  824. '*************************************************************************
  825. SUB MakeListFromSectionFilename (szSym$, szSect$) STATIC
  826. '$ifdef DEBUG
  827.     if szSym$ = "" then
  828.         n% = 1
  829.     elseif FValidInfSect(szSect$) = 0 then
  830.         n% = 2
  831.     else
  832.         n% = 0
  833.     end if
  834.     if n% > 0 then
  835.         BadArgErr n%, "MakeListFromSectionFilename", szSym$+", "+szSect$
  836.     end if
  837. '$endif ''DEBUG
  838.  
  839.     IF FMakeListInfSectionField(szSym$, szSect$, 1) = 0 THEN
  840. '$ifdef DEBUG
  841.         StfApiErr saeFail, "MakeListFromSectionFilename", szSym$+", "+szSect$
  842. '$endif ''DEBUG
  843.         ERROR STFERR
  844.     END IF
  845. END SUB
  846.  
  847.  
  848. '*************************************************************************
  849. SUB MakeListFromSectionSize (szSym$, szSect$) STATIC
  850. '$ifdef DEBUG
  851.     if szSym$ = "" then
  852.         n% = 1
  853.     elseif FValidInfSect(szSect$) = 0 then
  854.         n% = 2
  855.     else
  856.         n% = 0
  857.     end if
  858.     if n% > 0 then
  859.         BadArgErr n%, "MakeListFromSectionSize", szSym$+", "+szSect$
  860.     end if
  861. '$endif ''DEBUG
  862.  
  863.     IF FMakeListInfSectionField(szSym$, szSect$, 15) = 0 THEN
  864. '$ifdef DEBUG
  865.         StfApiErr saeFail, "MakeListFromSectionSize", szSym$+", "+szSect$
  866. '$endif ''DEBUG
  867.         ERROR STFERR
  868.     END IF
  869. END SUB
  870.  
  871.  
  872. '*************************************************************************
  873. SUB MakeListFromSectionVersion (szSym$, szSect$) STATIC
  874. '$ifdef DEBUG
  875.     if szSym$ = "" then
  876.         n% = 1
  877.     elseif FValidInfSect(szSect$) = 0 then
  878.         n% = 2
  879.     else
  880.         n% = 0
  881.     end if
  882.     if n% > 0 then
  883.         BadArgErr n%, "MakeListFromSectionVersion", szSym$+", "+szSect$
  884.     end if
  885. '$endif ''DEBUG
  886.  
  887.     IF FMakeListInfSectionField(szSym$, szSect$, 19) = 0 THEN
  888. '$ifdef DEBUG
  889.         StfApiErr saeFail, "MakeListFromSectionVersion", szSym$+", "+szSect$
  890. '$endif ''DEBUG
  891.         ERROR STFERR
  892.     END IF
  893. END SUB
  894.  
  895.  
  896. '*************************************************************************
  897. SUB InitInstall STATIC
  898.     IF hSetup > 0 THEN
  899. '$ifdef DEBUG
  900.         StfApiErr saeInit, "InitInstall", ""
  901. '$endif ''DEBUG
  902.     ELSEIF FInitializeInstall(HinstFrame(), HwndFrame()) = 0 THEN
  903. '$ifdef DEBUG
  904.         StfApiErr saeFail, "InitInstall", ""
  905. '$endif ''DEBUG
  906.         END
  907.     END IF
  908. END SUB
  909.  
  910.  
  911. '*************************************************************************
  912. SUB CreateDir (szDir$, cmo%) STATIC
  913. '$ifdef DEBUG
  914.     if FValidFATDir(szDir$) = 0 then
  915.         BadArgErr 1, "CreateDir", szDir$+", "+STR$(cmo%)
  916.     end if
  917. '$endif ''DEBUG
  918.     IF FCreateDir(szDir$, cmo%) = 0 THEN
  919. '$ifdef DEBUG
  920.         StfApiErr saeFail, "CreateDir", szDir$+", "+STR$(cmo%)
  921. '$endif ''DEBUG
  922.         ERROR STFERR
  923.     END IF
  924. END SUB
  925.  
  926.  
  927. '*************************************************************************
  928. SUB RemoveDir (szDir$, cmo%) STATIC
  929. '$ifdef DEBUG
  930.     if FValidFATDir(szDir$) = 0 then
  931.         BadArgErr 1, "RemoveDir", szDir$+", "+STR$(cmo%)
  932.     end if
  933. '$endif ''DEBUG
  934.     IF FRemoveDir(szDir$, cmo%) = 0 THEN
  935. '$ifdef DEBUG
  936.         StfApiErr saeFail, "RemoveDir", szDir$+", "+STR$(cmo%)
  937. '$endif ''DEBUG
  938.         ERROR STFERR
  939.     END IF
  940. END SUB
  941.  
  942.  
  943.  
  944. '*************************************************************************
  945. SUB RemoveIniSection (szFile$, szSect$, cmo%) STATIC
  946. '$ifdef DEBUG
  947.     if FValidIniFile(szFile$) = 0 then
  948.         n% = 1
  949.     elseif FValidInfSect(szSect$) = 0 then
  950.         n% = 2
  951.     else
  952.         n% = 0
  953.     end if
  954.     if n% > 0 then
  955.         BadArgErr n%, "RemoveIniSection", szFile$+", "+szSect$+", "+STR$(cmo%)
  956.     end if
  957. '$endif ''DEBUG
  958.  
  959.     IF FRemoveIniSection(szFile$, szSect$, cmo%) = 0 THEN
  960. '$ifdef DEBUG
  961.         StfApiErr saeFail, "RemoveIniSection", szFile$+", "+szSect$+", "+STR$(cmo%)
  962. '$endif ''DEBUG
  963.         ERROR STFERR
  964.     END IF
  965. END SUB
  966.  
  967.  
  968. '*************************************************************************
  969. SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
  970. '$ifdef DEBUG
  971.     if FValidIniFile(szFile$) = 0 then
  972.         n% = 1
  973.     elseif FValidInfSect(szSect$) = 0 then
  974.         n% = 2
  975.     else
  976.         n% = 0
  977.     end if
  978.     if n% > 0 then
  979.         BadArgErr n%, "CreateIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
  980.     end if
  981. '$endif ''DEBUG
  982.  
  983.     IF FCreateIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
  984. '$ifdef DEBUG
  985.         StfApiErr saeFail, "CreateIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
  986. '$endif ''DEBUG
  987.         ERROR STFERR
  988.     END IF
  989. END SUB
  990.  
  991.  
  992. '*************************************************************************
  993. SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%) STATIC
  994. '$ifdef DEBUG
  995.     if FValidIniFile(szFile$) = 0 then
  996.         n% = 1
  997.     elseif FValidInfSect(szSect$) = 0 then
  998.         n% = 2
  999.     elseif szKey$ = "" then
  1000.         n% = 3
  1001.     else
  1002.         n% = 0
  1003.     end if
  1004.     if n% > 0 then
  1005.         BadArgErr n%, "RemoveIniKey", szFile$+", "+szSect$+", "+szKey$+", "+STR$(cmo%)
  1006.     end if
  1007. '$endif ''DEBUG
  1008.  
  1009.     IF FRemoveIniKey(szFile$, szSect$, szKey$, cmo%) = 0 THEN
  1010. '$ifdef DEBUG
  1011.         StfApiErr saeFail, "RemoveIniKey", szFile$+", "+szSect$+", "+szKey$+", "+STR$(cmo%)
  1012. '$endif ''DEBUG
  1013.         ERROR STFERR
  1014.     END IF
  1015. END SUB
  1016.  
  1017.  
  1018. '*************************************************************************
  1019. SUB CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
  1020. '$ifdef DEBUG
  1021.     if FValidFATPath(szFile$) = 0 then
  1022.         n% = 1
  1023.     elseif FValidInfSect(szSect$) = 0 then
  1024.         n% = 2
  1025.     elseif szKey$ = "" then
  1026.         n% = 3
  1027.     else
  1028.         n% = 0
  1029.     end if
  1030.     if n% > 0 then
  1031.         BadArgErr n%, "CreateSysIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
  1032.     end if
  1033. '$endif ''DEBUG
  1034.  
  1035.     IF FCreateSysIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
  1036. '$ifdef DEBUG
  1037.         StfApiErr saeFail, "CreateSysIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
  1038. '$endif ''DEBUG
  1039.         ERROR STFERR
  1040.     END IF
  1041. END SUB
  1042.  
  1043.  
  1044. '*************************************************************************
  1045. SUB CreateProgmanGroup (szGroup$, szPath$, cmo%) STATIC
  1046. '$ifdef DEBUG
  1047.     if szGroup$ = "" or len(szGroup$) > 24 then
  1048.         BadArgErr 1, "CreateProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
  1049.     end if
  1050. '$endif ''DEBUG
  1051.     IF FCreateProgManGroup(szGroup$, szPath$, cmo%) = 0 THEN
  1052. '$ifdef DEBUG
  1053.         StfApiErr saeFail, "CreateProgmanGroup", szGroup$+", "+szPath$+", "+STR$(cmo%)
  1054. '$endif ''DEBUG
  1055.         ERROR STFERR
  1056.     END IF
  1057. END SUB
  1058.  
  1059.  
  1060. '*************************************************************************
  1061. SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%) STATIC
  1062. '$ifdef DEBUG
  1063.     if szGroup$ = "" or len(szGroup$) > 24 then
  1064.         BadArgErr 1, "ShowProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
  1065.     end if
  1066. '$endif ''DEBUG
  1067.     IF FShowProgManGroup(szGroup$, STR$(Cmd%), cmo%) = 0 THEN
  1068. '$ifdef DEBUG
  1069.         StfApiErr saeFail, "ShowProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
  1070. '$endif ''DEBUG
  1071.         ERROR STFERR
  1072.     END IF
  1073. END SUB
  1074.  
  1075.  
  1076. '*************************************************************************
  1077. SUB StampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) STATIC
  1078. '$ifdef DEBUG
  1079.     if FValidInfSect(szSect$) = 0 then
  1080.         n% = 1
  1081.     elseif szKey$ = "" then
  1082.         n% = 2
  1083.     elseif FValidFATDir(szDst$) = 0 then
  1084.         n% = 3
  1085.     else
  1086.         n% = 0
  1087.     end if
  1088.     if n% > 0 then
  1089.         BadArgErr n%, "StampResource", szSect$+", "+szKey$+", "+szDst$+", "+STR$(wResType%)+", "+STR$(wResId%)+", "+szData$+", "+STR$(cbData%)
  1090.     end if
  1091. '$endif ''DEBUG
  1092.  
  1093.     IF FStampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) = 0 THEN
  1094. '$ifdef DEBUG
  1095.         StfApiErr saeFail, "StampResource", szSect$+", "+szKey$+", "+szDst$+", "+STR$(wResType%)+", "+STR$(wResId%)+", "+szData$+", "+STR$(cbData%)
  1096. '$endif ''DEBUG
  1097.         ERROR STFERR
  1098.     END IF
  1099. END SUB
  1100.  
  1101.  
  1102. '*************************************************************************
  1103. SUB DumpCopyList (szFile$) STATIC
  1104. '$ifdef DEBUG
  1105.     if szFile$ = "" then
  1106.         BadArgErr 1, "DumpCopyList", szFile$
  1107.     end if
  1108. '$endif ''DEBUG
  1109.     IF FDumpCopyListToFile (szFile$) = 0 THEN
  1110. '$ifdef DEBUG
  1111.         StfApiErr saeFail, "DumpCopyList", szFile$
  1112. '$endif ''DEBUG
  1113.         ERROR STFERR
  1114.     END IF
  1115. END SUB
  1116.  
  1117.  
  1118. '*************************************************************************
  1119. SUB ClearCopyList STATIC
  1120.     ResetCopyList
  1121. END SUB
  1122.  
  1123.  
  1124. '*************************************************************************
  1125. FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) STATIC AS LONG
  1126.     lNeed& = LcbGetCopyListCost (szExtraList$, szCostList$, szNeedList$)
  1127.     IF lNeed& < 0 THEN
  1128. '$ifdef DEBUG
  1129.         StfApiErr saeFail, "GetCopyListCost", szExtraList$+", "+szCostList$+", "+szNeedList$
  1130. '$endif ''DEBUG
  1131.         ERROR STFERR
  1132.     END IF
  1133.     GetCopyListCost = lNeed&
  1134. END FUNCTION
  1135.  
  1136.  
  1137. '*************************************************************************
  1138. SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%) STATIC
  1139.     szItemNew$ = szItem$
  1140.     IF szOther$ <> "" THEN
  1141.         szItemNew$ = szItem$ + "," + szOther$
  1142.     END IF
  1143. '$ifdef DEBUG
  1144.     if szGroup$ = "" or len(szGroup$) > 24 then
  1145.         BadArgErr 1, "CreateProgmanItem", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
  1146.     end if
  1147. '$endif ''DEBUG
  1148.  
  1149.     IF FCreateProgManItem(szGroup$, szItemNew$, szCmd$, cmo%) = 0 THEN
  1150. '$ifdef DEBUG
  1151.         StfApiErr saeFail, "CreateProgmanItem", szGroup$+", "+szItem$+", "+szCmd$+", "+szOther$+", "+STR$(cmo%)
  1152. '$endif ''DEBUG
  1153.         ERROR STFERR
  1154.     END IF
  1155.     szItemNew$ = ""
  1156. END SUB
  1157.  
  1158.  
  1159. '*************************************************************************
  1160. SUB AddDos5Help (szProgName$, szProgHelp$, cmo%) STATIC
  1161. '$ifdef DEBUG
  1162.     if szProgName$ = "" OR MID$(szProgName$, 1, 1) = "@" OR LEN(szProgName$) > 8 then
  1163.         n% = 1
  1164.     elseif INSTR(szProgName$, " ") <> 0 OR INSTR(szProgName$, CHR$(9)) <> 0 then
  1165.         n% = 1
  1166.     elseif szProgHelp$ = "" then
  1167.         n% = 2
  1168.     else
  1169.         n% = 0
  1170.     end if
  1171.     if n% > 0 then
  1172.         BadArgErr n%, "AddDos5Help", szProgName$+", "+szProgHelp$+", "+STR$(cmo%)
  1173.     end if
  1174. '$endif ''DEBUG
  1175.     IF FAddDos5Help (szProgName$, szProgHelp$, cmo%) = 0 THEN
  1176. '$ifdef DEBUG
  1177.         StfApiErr saeFail, "AddDos5Help", szProgName$+", "+szProgHelp$+", "+STR$(cmo%)
  1178. '$endif ''DEBUG
  1179.         ERROR STFERR
  1180.     END IF
  1181. END SUB
  1182.  
  1183.  
  1184. '*************************************************************************
  1185. SUB CopyFilesInCopyList STATIC
  1186.     grc% = GrcCopyFilesInCopyList (HinstFrame())
  1187.  
  1188.     IF grc% = grcUserQuit THEN
  1189.         ERROR STFQUIT
  1190.     ELSEIF grc% > 0 THEN
  1191. '$ifdef DEBUG
  1192.         StfApiErr saeFail, "CopyFilesInCopyList", ""
  1193. '$endif ''DEBUG
  1194.         ERROR STFERR
  1195.     END IF
  1196. END SUB
  1197.  
  1198.  
  1199. '*************************************************************************
  1200. SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%) STATIC
  1201. '$ifdef DEBUG
  1202.     if FValidFATPath(szFullPathSrc$) = 0 then
  1203.         n% = 1
  1204.     elseif FValidFATPath(szFullPathDst$) = 0 then
  1205.         n% = 2
  1206.     else
  1207.         n% = 0
  1208.     end if
  1209.     if n% > 0 then
  1210.         BadArgErr n%, "CopyFile", szFullPathSrc$+", "+szFullPathDst$+", "+STR$(cmo%)+", "+STR$(fAppend%)
  1211.     end if
  1212. '$endif ''DEBUG
  1213.  
  1214.     IF  FCopyOneFile(szFullPathSrc$, szFullPathDst$, (cmo OR cmoCopy), fAppend%) = 0 THEN
  1215. '$ifdef DEBUG
  1216.         StfApiErr saeFail, "CopyFile", szFullPathSrc$+", "+szFullPathDst$+", "+STR$(cmo%)+", "+STR$(fAppend%)
  1217. '$endif ''DEBUG
  1218.         ERROR STFERR
  1219.     END IF
  1220. END SUB
  1221.  
  1222.  
  1223.  
  1224. '*************************************************************************
  1225. SUB RemoveFile (szFullPathSrc$, cmo%) STATIC
  1226. '$ifdef DEBUG
  1227.     if FValidFATPath(szFullPathSrc$) = 0 then
  1228.         BadArgErr 1, "RemoveFile", szFullPathSrc$+", "+STR$(cmo%)
  1229.     end if
  1230. '$endif ''DEBUG
  1231.     IF  YnrcRemoveFile(szFullPathSrc$, cmo%) = ynrcNo THEN
  1232. '$ifdef DEBUG
  1233.         StfApiErr saeFail, "RemoveFile", szFullPathSrc$+", "+STR$(cmo%)
  1234. '$endif ''DEBUG
  1235.         ERROR STFERR
  1236.     END IF
  1237. END SUB
  1238.  
  1239.  
  1240. '*************************************************************************
  1241. SUB BackupFile (szFullPath$, szBackup$) STATIC
  1242. '$ifdef DEBUG
  1243.     if FValidFATPath(szFullPath$) = 0 then
  1244.         n% = 1
  1245.     elseif szBackup$ = "" then
  1246.         n% = 2
  1247.     else
  1248.         n% = 0
  1249.     end if
  1250.     if n% > 0 then
  1251.         BadArgErr n%, "BackupFile", szFullPath$+", "+szBackup$
  1252.     end if
  1253. '$endif ''DEBUG
  1254.  
  1255.     IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
  1256. '$ifdef DEBUG
  1257.         StfApiErr saeFail, "BackupFile", szFullPath$+", "+szBackup$
  1258. '$endif ''DEBUG
  1259.         ERROR STFERR
  1260.     END IF
  1261. END SUB
  1262.  
  1263.  
  1264. '*************************************************************************
  1265. SUB RenameFile (szFullPath$, szBackup$) STATIC
  1266. '$ifdef DEBUG
  1267.     if FValidFATPath(szFullPath$) = 0 then
  1268.         n% = 1
  1269.     elseif szBackup$ = "" then
  1270.         n% = 2
  1271.     else
  1272.         n% = 0
  1273.     end if
  1274.     if n% > 0 then
  1275.         BadArgErr n%, "RenameFile", szFullPath$+", "+szBackup$
  1276.     end if
  1277. '$endif ''DEBUG
  1278.  
  1279.     IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
  1280. '$ifdef DEBUG
  1281.         StfApiErr saeFail, "RenameFile", szFullPath$+", "+szBackup$
  1282. '$endif ''DEBUG
  1283.         ERROR STFERR
  1284.     END IF
  1285. END SUB
  1286.  
  1287.  
  1288. '*************************************************************************
  1289. SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$) STATIC
  1290. '$ifdef DEBUG
  1291.     if FValidInfSect(szSect$) = 0 then
  1292.         n% = 1
  1293.     elseif FValidFATDir(szSrc$) = 0 then
  1294.         n% = 2
  1295.     elseif FValidFATDir(szDest$) = 0 then
  1296.         n% = 3
  1297.     else
  1298.         n% = 0
  1299.     end if
  1300.     if n% > 0 then
  1301.         BadArgErr n%, "AddSectionFilesToCopyList", szSect$+", "+szSrc$+", "+szDest$
  1302.     end if
  1303. '$endif ''DEBUG
  1304.  
  1305.     IF FAddSectionFilesToCopyList (szSect$, szSrc$, szDest$) = 0 THEN
  1306. '$ifdef DEBUG
  1307.         StfApiErr saeFail, "AddSectionFilesToCopyList", szSect$+", "+szSrc$+", "+szDest$
  1308. '$endif ''DEBUG
  1309.         ERROR STFERR
  1310.     END IF
  1311. END SUB
  1312.  
  1313.  
  1314. '*************************************************************************
  1315. SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
  1316. '$ifdef DEBUG
  1317.     if FValidInfSect(szSect$) = 0 then
  1318.         n% = 1
  1319.     elseif szKey$ = "" then
  1320.         n% = 2
  1321.     elseif FValidFATDir(szSrc$) = 0 then
  1322.         n% = 3
  1323.     elseif FValidFATDir(szDest$) = 0 then
  1324.         n% = 4
  1325.     else
  1326.         n% = 0
  1327.     end if
  1328.     if n% > 0 then
  1329.         BadArgErr n%, "AddSectionKeyFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
  1330.     end if
  1331. '$endif ''DEBUG
  1332.  
  1333.     IF FAddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
  1334. '$ifdef DEBUG
  1335.         StfApiErr saeFail, "AddSectionKeyFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
  1336. '$endif ''DEBUG
  1337.         ERROR STFERR
  1338.     END IF
  1339. END SUB
  1340.  
  1341.  
  1342. '*************************************************************************
  1343. SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
  1344. '$ifdef DEBUG
  1345.     if FValidInfSect(szSect$) = 0 then
  1346.         n% = 1
  1347.     elseif szKey$ = "" then
  1348.         n% = 2
  1349.     elseif FValidFATDir(szSrc$) = 0 then
  1350.         n% = 3
  1351.     elseif FValidFATPath(szDest$) = 0 then
  1352.         n% = 4
  1353.     else
  1354.         n% = 0
  1355.     end if
  1356.     if n% > 0 then
  1357.         BadArgErr n%, "AddSpecialFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
  1358.     end if
  1359. '$endif ''DEBUG
  1360.  
  1361.     IF FAddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
  1362. '$ifdef DEBUG
  1363.         StfApiErr saeFail, "AddSpecialFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
  1364. '$endif ''DEBUG
  1365.         ERROR STFERR
  1366.     END IF
  1367. END SUB
  1368.  
  1369.  
  1370. '*************************************************************************
  1371. SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&) STATIC
  1372. '$ifdef DEBUG
  1373.     if szDll$ = "" then
  1374.         n% = 1
  1375.     elseif idDlg% = 0 then
  1376.         n% = 2
  1377.     elseif szProc$ = "" then
  1378.         n% = 3
  1379.     elseif lTicks& <= 0 then
  1380.         n% = 4
  1381.     else
  1382.         n% = 0
  1383.     end if
  1384.     if n% > 0 then
  1385.         BadArgErr n%, "AddToBillboardList", szDll$+", "+STR$(idDlg%)+", "+szProc$+", "+STR$(lTicks&)
  1386.     end if
  1387. '$endif ''DEBUG
  1388.  
  1389.     IF FAddToBillboardList(szDll$, idDlg%, szProc$, lTicks&) = 0 THEN
  1390. '$ifdef DEBUG
  1391.         StfApiErr saeFail, "AddToBillboardList", szDll$+", "+STR$(idDlg%)+", "+szProc$+", "+STR$(lTicks&)
  1392. '$endif ''DEBUG
  1393.         ERROR STFERR
  1394.     END IF
  1395. END SUB
  1396.  
  1397.  
  1398. '*************************************************************************
  1399. SUB AddBlankToBillboardList (lTicks&) STATIC
  1400. '$ifdef DEBUG
  1401.     if lTicks& <= 0 then
  1402.         BadArgErr 1, "AddBlankToBillboardList", STR$(lTicks&)
  1403.     end if
  1404. '$endif ''DEBUG
  1405.     IF FAddToBillboardList(NULL, 0, NULL, lTicks&) = 0 THEN
  1406. '$ifdef DEBUG
  1407.         StfApiErr saeFail, "AddBlankToBillboardList", STR$(lTicks&)
  1408. '$endif ''DEBUG
  1409.         ERROR STFERR
  1410.     END IF
  1411. END SUB
  1412.  
  1413.  
  1414. '*************************************************************************
  1415. SUB ClearBillboardList STATIC
  1416.     IF FClearBillboardList = 0 THEN
  1417. '$ifdef DEBUG
  1418.         StfApiErr saeFail, "ClearBillboardList", ""
  1419. '$endif ''DEBUG
  1420.         ERROR STFERR
  1421.     END IF
  1422. END SUB
  1423.  
  1424.  
  1425. '*************************************************************************
  1426. SUB OpenLogFile (szFile$, fAppend%) STATIC
  1427. '$ifdef DEBUG
  1428.     if FValidFATPath(szFile$) = 0 then
  1429.         BadArgErr 1, "OpenLogFile", szFile$+", "+STR$(fAppend%)
  1430.     end if
  1431. '$endif ''DEBUG
  1432.     IF FOpenLogFile(szFile$, fAppend%) = 0 THEN
  1433. '$ifdef DEBUG
  1434.         StfApiErr saeFail, "OpenLogFile", szFile$+", "+STR$(fAppend%)
  1435. '$endif ''DEBUG
  1436.         ERROR STFERR
  1437.     END IF
  1438. END SUB
  1439.  
  1440.  
  1441. '*************************************************************************
  1442. SUB CloseLogFile STATIC
  1443.     IF FCloseLogFile() = 0 THEN
  1444. '$ifdef DEBUG
  1445.         StfApiErr saeFail, "CloseLogFile", ""
  1446. '$endif ''DEBUG
  1447.         ERROR STFERR
  1448.     END IF
  1449. END SUB
  1450.  
  1451.  
  1452. '*************************************************************************
  1453. SUB WriteToLogFile (szStr$) STATIC
  1454.     IF FWriteToLogFile(szStr$, 1) = 0 THEN
  1455. '$ifdef DEBUG
  1456.         StfApiErr saeFail, "WriteToLogFile", szStr$
  1457. '$endif ''DEBUG
  1458.         ERROR STFERR
  1459.     END IF
  1460. END SUB
  1461.  
  1462.  
  1463. ''' -1 in either parameter will mean 'center in frame client area'
  1464. '*************************************************************************
  1465. SUB SetCopyGaugePosition (x%, y%) STATIC
  1466.     ProSetPos x%, y%
  1467. END SUB
  1468.  
  1469.  
  1470. '*************************************************************************
  1471. FUNCTION FindFileUsingFileOpen (szFile$) STATIC AS STRING
  1472.     szBuf$ = STRING$(512, 32)
  1473.  
  1474.     wRet% = WFindFileUsingFileOpen(szFile$, szBuf$, len(szBuf$))
  1475.     IF wRet% = 0 THEN
  1476.         FindFileUsingFileOpen = szBuf$
  1477.     ELSEIF wRet% = 1 THEN
  1478.         FindFileUsingFileOpen = ""
  1479.     ELSE
  1480. '$ifdef DEBUG
  1481.         StfApiErr saeFail, "FindFileUsingFileOpen", szFile$
  1482. '$endif ''DEBUG
  1483.         ERROR STFERR
  1484.     END IF
  1485.  
  1486.     szBuf$ = ""
  1487. END FUNCTION
  1488.  
  1489.  
  1490. '*************************************************************************
  1491. FUNCTION IsDirWritable (szDir$) STATIC AS INTEGER
  1492.     IsDirWritable = FIsDirWritable(szDir$)
  1493. END FUNCTION
  1494.  
  1495.  
  1496. '*************************************************************************
  1497. FUNCTION IsFileWritable (szFile$) STATIC AS INTEGER
  1498. '$ifdef DEBUG
  1499.     if FValidFATDir(szFile$) = 0 then
  1500.         BadArgErr 1, "IsFileWritable", szFile$
  1501.     end if
  1502. '$endif ''DEBUG
  1503.     IsFileWritable = FIsFileWritable(szFile$)
  1504. END FUNCTION
  1505.  
  1506.  
  1507. '*************************************************************************
  1508. FUNCTION GetNthFieldFromIniString (szLine$, iField%) STATIC AS STRING
  1509.     IF iField% < 1 THEN
  1510. '$ifdef DEBUG
  1511.         StfApiErr saeFail, "GetNthFieldFromIniString", szLine$+", "+STR$(iField%)
  1512. '$endif ''DEBUG
  1513.         ERROR STFERR
  1514.     END IF
  1515.     szStart$ = szLine$
  1516.     IF iField% <> 1 THEN
  1517.         FOR i% = 2 TO iField% STEP 1
  1518.             iNew% = INSTR(szStart$, ",")
  1519.             IF iNew% = 0 THEN
  1520.                 GetNthFieldFromIniString = ""
  1521.                 GOTO _GNFFIS_END
  1522.             END IF
  1523.             szStart$ = MID$(szStart$, (iNew% + 1))
  1524.         NEXT
  1525.     END IF
  1526.  
  1527.     iNew% = INSTR(szStart$, ",")
  1528.     IF iNew% <> 0 THEN
  1529.         szStart$ = MID$(szStart$, 1, (iNew% - 1))
  1530.     END IF
  1531.  
  1532.     GetNthFieldFromIniString = LTRIM$(RTRIM$(szStart$))
  1533.  
  1534. _GNFFIS_END:
  1535.  
  1536. END FUNCTION
  1537.  
  1538.  
  1539. '*************************************************************************
  1540. FUNCTION GetWindowsMajorVersion STATIC AS INTEGER
  1541.     GetWindowsMajorVersion = GetVersion() MOD 256
  1542. END FUNCTION
  1543.  
  1544.  
  1545. '*************************************************************************
  1546. FUNCTION GetWindowsMinorVersion STATIC AS INTEGER
  1547.     GetWindowsMinorVersion = GetVersion() / 256
  1548. END FUNCTION
  1549.  
  1550.  
  1551. '*************************************************************************
  1552. FUNCTION GetWindowsMode STATIC AS INTEGER
  1553.     GetWindowsMode = 0
  1554.     longTmp& = GetWinFlags()
  1555.     IF longTmp& AND WF_STANDARD THEN
  1556.         GetWindowsMode = 1
  1557.     ELSEIF longTmp& AND WF_ENHANCED THEN
  1558.         GetWindowsMode = 2
  1559.     END IF
  1560. END FUNCTION
  1561.  
  1562.  
  1563. '*************************************************************************
  1564. FUNCTION GetWindowsDir STATIC AS STRING
  1565.     szBuf$ = string$(256, 32)
  1566.     cbBuf% = GetWindowsDirectory(szBuf$, 256)
  1567.  
  1568.     IF cbBuf% = 0 THEN
  1569.         GetWindowsDir = ""
  1570. '$ifdef DEBUG
  1571.         StfApiErr saeFail, "GetWindowsDir", ""
  1572. '$endif ''DEBUG
  1573.         ERROR STFERR
  1574.     ELSE
  1575.         IF cbBuf% > 255 THEN
  1576.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  1577.             ERROR STFERR
  1578.         END IF
  1579.         szBuf$ = RTRIM$(szBuf$)
  1580.         IF MID$(szBuf$, 1, 1) = "\" THEN
  1581.             'szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  1582.             szBuf$ = MID$(GetWindowsSysDir, 1, 2) + szBuf$
  1583.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  1584.             szBuf$ = MID$(GetWindowsSysDir, 1, 3) + szBuf$
  1585.         END IF
  1586.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  1587.             szBuf$ = szBuf$ + "\"
  1588.         END IF
  1589.         GetWindowsDir = szBuf$
  1590.     END IF
  1591.  
  1592.     szBuf$ = ""
  1593. END FUNCTION
  1594.  
  1595.  
  1596. '*************************************************************************
  1597. FUNCTION GetWindowsSysDir STATIC AS STRING
  1598.     szBuf$ = string$(256, 32)
  1599.     cbBuf% = GetSystemDirectory(szBuf$, 256)
  1600.  
  1601.     IF cbBuf% = 0 THEN
  1602. '$ifdef DEBUG
  1603.         StfApiErr saeFail, "GetWindowsSysDir", ""
  1604. '$endif ''DEBUG
  1605.         ERROR STFERR
  1606.     ELSE
  1607.         IF cbBuf% > 255 THEN
  1608.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  1609.             ERROR STFERR
  1610.         END IF
  1611.         szBuf$ = RTRIM$(szBuf$)
  1612.         IF MID$(szBuf$, 1, 1) = "\" THEN
  1613.             szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  1614.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  1615.             szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  1616.         END IF
  1617.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  1618.             szBuf$ = szBuf$ + "\"
  1619.         END IF
  1620.         GetWindowsSysDir = szBuf$
  1621.     END IF
  1622.  
  1623.     szBuf$ = ""
  1624. END FUNCTION
  1625.  
  1626.  
  1627. '*************************************************************************
  1628. FUNCTION IsWindowsShared STATIC AS INTEGER
  1629.     szWin$ = UCASE$(GetWindowsDir())
  1630.     szSys$ = UCASE$(GetWindowsSysDir())
  1631.  
  1632.     IF len(szWin$) = 0 THEN
  1633. '$ifdef DEBUG
  1634.         StfApiErr saeFail, "IsWindowsShared", ""
  1635. '$endif ''DEBUG
  1636.         ERROR STFERR
  1637.     END IF
  1638.  
  1639.     IF len(szSys$) <= len(szWin$) THEN
  1640.         IsWindowsShared = 1
  1641.     ELSE
  1642.         szSys$ = MID$(szSys$, 1, len(szWin$))
  1643.         IF szWin$ = szSys$ THEN
  1644.             IsWindowsShared = 0
  1645.         ELSE
  1646.             IsWindowsShared = 1
  1647.         END IF
  1648.     END IF
  1649. END FUNCTION
  1650.  
  1651.  
  1652. '*************************************************************************
  1653. FUNCTION GetScreenWidth STATIC AS INTEGER
  1654.     GetScreenWidth = GetSystemMetrics(SM_CXSCREEN)
  1655. END FUNCTION
  1656.  
  1657.  
  1658. '*************************************************************************
  1659. FUNCTION GetScreenHeight STATIC AS INTEGER
  1660.     GetScreenHeight = GetSystemMetrics(SM_CYSCREEN)
  1661. END FUNCTION
  1662.  
  1663.  
  1664. '*************************************************************************
  1665. SUB SetRestartDir (szDir$) STATIC
  1666. '$ifdef DEBUG
  1667.     if FValidFATDir(szDir$) = 0 then
  1668.         BadArgErr 1, "SetRestartDir", szDir$
  1669.     end if
  1670. '$endif ''DEBUG
  1671.     IF FSetRestartDir(szDir$) = 0 THEN
  1672. '$ifdef DEBUG
  1673.         StfApiErr saeFail, "SetRestartDir", szDir$
  1674. '$endif ''DEBUG
  1675.         ERROR STFERR
  1676.     END IF
  1677. END SUB
  1678.  
  1679.  
  1680. '*************************************************************************
  1681. FUNCTION RestartListEmpty STATIC AS INTEGER
  1682.     IF FRestartListEmpty() = 0 THEN
  1683.         RestartListEmpty = 0
  1684.     ELSE
  1685.         RestartListEmpty = 1
  1686.     END IF
  1687. END FUNCTION
  1688.  
  1689.  
  1690. '*************************************************************************
  1691. FUNCTION ExitExecRestart STATIC AS INTEGER
  1692.     ExitExecRestart = FExitExecRestart
  1693. END FUNCTION
  1694.  
  1695.  
  1696. '*************************************************************************
  1697. SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%) STATIC
  1698.  
  1699. '$ifdef DEBUG
  1700.     if (FValidFATPath(szSrc$) = 0) AND (szSrc$ <> "") then
  1701.         n% = 1
  1702.     elseif FValidFATPath(szDst$) = 0 then
  1703.         n% = 2
  1704.     elseif FValidFATDir(szDir$) = 0 then
  1705.         n% = 3
  1706.     else
  1707.         n% = 0
  1708.     end if
  1709.     if n% > 0 then
  1710.         BadArgErr n%, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%)
  1711.     end if
  1712. '$endif ''DEBUG
  1713.  
  1714.     IF FPrependToPath (szSrc$, szDst$, szDir$, cmo%) = 0 THEN
  1715. '$ifdef DEBUG
  1716.         StfApiErr saeFail, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%)
  1717. '$endif ''DEBUG
  1718.         ERROR STFERR
  1719.     END IF
  1720. END SUB
  1721.  
  1722.  
  1723.  
  1724. '**************************************************************************
  1725. '***************************  Error Handlers  *****************************
  1726. '**************************************************************************
  1727.  
  1728.  
  1729. '$ifdef DEBUG
  1730. '**************************************************************************
  1731. SUB StfApiErr (nMsg%, szApi$, szArgs$) STATIC      ''DEBUG only
  1732.     select case nMsg%
  1733.         case saeFail
  1734.             lpText$ = "Failed"
  1735.         case saeInit
  1736.             lpText$ = "Already Initialized"
  1737.         case saeNYI
  1738.             lpText$ = "NYI"
  1739.         case else
  1740.             lpText$ = "Bad Arg "+LTRIM$(STR$(nMsg% - saeArg))
  1741.     end select
  1742.  
  1743.     lpText$ = lpText$ + ": "+ szApi$
  1744.     if szArgs$ <> "" then
  1745.         lpText$ = lpText + " (" + szArgs$ + ")"
  1746.     end if
  1747.     lpCaption$ = "MS-Setup Toolkit API Error"
  1748.     res% = DoMsgBox(lpText$, lpCaption$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
  1749.     print lpText$
  1750.     lpText$ = ""
  1751.     lpCaption$ = ""
  1752. END SUB
  1753.  
  1754. '**************************************************************************
  1755. SUB BadArgErr (nArg%, szApi$, szArgs$) STATIC      ''DEBUG only
  1756.     StfApiErr nArg%+saeArg, szApi$, szArgs$
  1757.     ERROR STFERR
  1758. END SUB
  1759.  
  1760.  
  1761. '** REVIEW: Move this function into common lib (we'll need it there too)
  1762. '**************************************************************************
  1763. FUNCTION FValidInfSect (szSect$) STATIC AS INTEGER
  1764.     if (szSect$ = "") OR (INSTR(1,szSect$,"]") <> 0) then
  1765.         FValidInfSect = 0
  1766.     else
  1767.         FValidInfSect = 1
  1768.     end if
  1769. END FUNCTION
  1770.  
  1771.  
  1772. '** REVIEW: Move this function into common lib (we'll need it there too)
  1773. '**************************************************************************
  1774. FUNCTION FValidIniFile (szFile$) STATIC AS INTEGER
  1775.     if (FValidFATPath(szFile$) = 0) AND (UCASE$(szFile$) <> "WIN.INI") then
  1776.         FValidIniFile = 0
  1777.     else
  1778.         FValidIniFile = 1
  1779.     end if
  1780. END FUNCTION
  1781.  
  1782. '**************************************************************************
  1783. FUNCTION FValidDrive (szDrive$) STATIC AS INTEGER
  1784.  
  1785.     if szDrive$ = "" then
  1786.         FValidDrive = 0
  1787.     elseif INSTR(1,szDrive$,"\\") = 1 then   ' UNC path
  1788.         FValidDrive = 1
  1789.     elseif ASC(UCASE$(szDrive$)) - ASC("A") < 0 then
  1790.         FValidDrive = 0
  1791.     elseif ASC(UCASE$(szDrive$)) - ASC("A") > 25 then
  1792.         FValidDrive = 0
  1793.     elseif LEN(szDrive$) = 1 then
  1794.         FValidDrive = 1
  1795.     elseif INSTR(2,szDrive$,":\") = 2 then
  1796.         FValidDrive = 1
  1797.     elseif INSTR(1,szDrive$,":") = 2 then
  1798.         FValidDrive = 1
  1799.     else
  1800.         FValidDrive = 0
  1801.     end if
  1802. END FUNCTION
  1803.  
  1804. '$endif ''DEBUG
  1805.  
  1806.  
  1807. TRAP CleanupTrap From "MSSHLSTF.DLL"
  1808.  
  1809. End Trap
  1810.  
  1811. hSetup = InitSetup(COMMAND$)
  1812.  
  1813. ON ERROR GOTO QUIT
  1814.  
  1815.